package cn.com.surker.system.dao;

import cn.com.surker.system.entity.SysRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 角色表 Mapper 接口
 * </p>
 *
 * @author lucky
 * @since 2021-05-21
 */
public interface SysRoleDao extends BaseMapper<SysRole> {

    /**
     * 根据用户ID查询角色名称
     * @param uid
     * @return
     */
    List<Map<String, Object>> queryRoleName(Long uid);

    /**
     * 查询角色用户
     * @param rid 角色ID
     * @param name 员工名称
     * @return
     */
    List<Map<String, Object>> queryRoleUser(Long rid, String name, Integer offset, Integer limit);

    /**
     * 查询角色菜单
     * @param rid 角色ID
     * @param name 菜单名称
     * @param type 菜单类型(0:手机菜单,1:后台菜单)
     * @return
     */
    List<Map<String, Object>> queryRoleMenu(Long rid, String name, Integer type, Integer offset, Integer limit);

    /**
     * 角色菜单加入 增删改 权限设置
     * @param rid
     * @param name
     * @param type
     * @param offset
     * @param limit
     * @return
     */
    List<Map<String, Object>> queryControlRoleMenu(Long rid, String name, Integer type, Integer offset, Integer limit);

    /**
     * 查询角色用户是否存在
     * @param uid 用户ID
     * @param rid 角色ID
     * @return
     */
    Integer queryRoleUserCount(Long uid, Long rid);

    /**
     * 查询角色菜单是否存在
     * @param mid 菜单ID
     * @param rid 角色ID
     * @return
     */
    Integer queryRoleMenuCount(Long mid, Long rid);

    /**
     * 添加/删除角色用户
     * @param uid 用户ID
     * @param rid 角色ID
     * @param status 状态(0:启用,1:禁用)
     * @return
     */
    Integer updateRoleUser(Long uid, Long rid, Integer status);

    /**
     * 添加/删除角色菜单
     * @param mid 菜单ID
     * @param rid 角色ID
     * @param status 状态(0:启用,1:禁用)
     * @return
     */
    Integer updateRoleMenu(Long mid, Long rid, Integer status);

    /**
     * 查询用户的访问菜单权限
     * @param uid
     * @return
     */
    List<Map<String, Object>> queryUserMenu(Long uid);

    /**
     * 添加角色用户
     * @param uid 用户ID
     * @param roleId 角色ID
     * @param status 状态(0:启用,1:禁用)
     * @param createTime 创建时间
     * @return
     */
    Integer saveRoleUser(Long uid, Long roleId, Integer status, String createTime);

    /**
     * 添加角色菜单
     * @param mid 菜单ID
     * @param roleId 角色ID
     * @param status 状态(0:启用,1:禁用)
     * @param createTime 创建时间
     * @return
     */
    Integer saveRoleMenu(Long mid, Long roleId, Integer status, String createTime);

	/**
	 * 删除用户全部角色
	 * @param uid
	 * @param status
	 * @return
	 */
	Integer deleteAllRoleUser(Long uid, Integer status);

    /**
     * 检查用户与角色是否存在
     * @param uid
     * @param roleId
     * @return
     */
	Integer checkRole(Long uid, Long roleId);
}
